package dao;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * Vorlage f�r die einzelnen DAOs.
 * 
 * 
 */
public abstract class DaoOberklasse<E> {

	/**
	 * Datenbank-Connection.
	 */
	protected SqlConnection connectionDAO = SqlConnection.getInstance();

	/**
	 * F�hrt einen SQL-Befehl aus.
	 * 
	 * @return List Gesuchte Ergbenisse aus dem Resultset.
	 * @throws IOException
	 */
	public abstract List<E> executeSQLSelect(String sql);

	/**
	 * Leitet einen SQL-befehl an die Connection weiter.
	 * 
	 * @param sql
	 *            Auszuf�hrender SQL-Befehl .
	 * @return Ergebnisse des SQL-Befehls als Resultset
	 */
	public void executeSQL(String sql) {
		this.connectionDAO.sqlAusfuehren(sql);
	}

	/**
	 * Schliesst die bestehende Datenbank-Connection.
	 * 
	 * @throws IOExceptions
	 */
	public void closecon() {
		this.connectionDAO.closeConnection();

	}

	/**
	 * Wandelt ein Date in ein Simple-Date-Format-String um.
	 * 
	 * @param date
	 *            Zu umwandelndes Date.
	 * @return DB-Kompatibler Datums-String
	 */
	protected String DateToSDF(Date date) {

		if (date != null) {
			SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

			return sf.format(date);
		}

		return null;

	}
}